<?php

	//obsluga lancuchow tesktowych
	class CText
	{
		static function GetRandTxt($iLen)
		{
			$szChars = array('a','b','c','d','e','f','g','h','i','j','k',
			 'l','m','n','o','p','q','r','s','t','u','w','x','y','z',
			 '1','2','3','4','5','6','7','8','9');
	
			$iCharsLen = count($szChars) -1 ;
			
			$szHash = '';
			
			for($i=0;$i<$iLen;$i++)
			{
				$szHash .= $szChars[ rand(0,$iCharsLen) ];
			}
			
			return $szHash;
		}
		
		//zwraca r5hash
		static function GetR5Hash($szString)
		{
			$iHash = 0;
			$iLen  = strlen($szString);
			
			for($i=0;$i<$iLen;$i++)
			{
				$iChr = ord($szString[$i]);
				
				$iHash += ($iChr<<4);
				$iHash += ($iChr>>4);
				$iHash *= 11;
			}
			
			return $iHash; 
		}
			
		//zwraca xor hash'a
		static function GetXorHash($szStrng)
		{
			$iCkSum = 0;
	
			for($i = 0; $i < strlen($szString); $i++)
			{
				$iCkSum ^= ord($szString[$i]);
			}
			
			return intval($iCkSum);
		}
		
		//wywala z dokumentu tagi htmlowe
		static function StripHtmlTags($szTxt,$szReplaceTxt = '')
		{
			//very basic tag stripping
			$aSearch = array('@<script[^>]*?>.*?</script>@si',
							 '@<style[^>]*?>.*?</style>@si',
							 '@<![\s\S]*?--[ \t\n\r]*>@si',
							 //'@<.--[^\[].+-->.@si',
							 '@<head[^>]*?>.*?</head>@si',
							 '@<!DOCTYPE[^"]+"([^"]+)"[^"]+"([^"]+)/([^/]+)\.dtd">@i');
			  
			$szTxt = preg_replace($aSearch,$szReplaceTxt,$szTxt);
	
			//tablica z tagami
			$aDisallowedTags = array('object','frame','iframe','frameset',
									 'applet','meta','form','head','body','html','xml',
									 'input','fieldset','select','textarea','w','code','title');
	
			foreach($aDisallowedTags as &$szTag)
			{
				$szTxt = preg_replace("/<\/?".$szTag."(.|\s)*?>/",$szReplaceTxt,$szTxt);
			}

			return $szTxt;
		}
		
		//wywala niebezpieczne tagi js
		static function StripJSTags($szHtml,$szReplaceTxt)
		{	
			//tablica z tagami
			$aDangerousAttr = array('onkeydown','onkeypress','onkeyup','onload','onmousedown','onmousemove','onmouseout', 
									'onmouseover', 'onmouseup', 'onunload','onclick', 'ondblclick','onresize','onsubmit',
									'onfocus', 'onfocusin', 'onfocusout','onabort', 'onactivate','oncontextmenu','onchange');
			
			foreach($aDangerousAttr as &$szAttr)
			{
				$szTxt = preg_replace("/".$szAttr."[ \\t\\n]*=[ \\t\\n]*[\"\'][^\"\']*[\"\']/i",'',$szTxt,-1);
	    
				$iReplacesDone += $iReplC;
			}
	
			//stripping out any javascript reference
			$szTxt = preg_replace('/javascript:[^\"\']*/i','',$szTxt);
			
			return $szTxt;
		}
	
		static function StripMsWordTags($szText,$szReplaceTxt = '')
		{
			//odnosniki wewnetrzne
			$szText = preg_replace('@<a(.+?)name="[^"]+"[^>]*></a>@is',$szReplaceTxt,$szText);
			
			//$szText = ereg_replace("<([^>]*)(class|lang|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>",$szReplaceTxt,$szText);
			 
			$szText = preg_replace("@<\![^>]*>@si",$szReplaceTxt,$szText);
			
			$szText = preg_replace("@</?[a-z]+\:[^>]*>@si",$szReplaceTxt,$szText);
			
			return $szText;
		}
		
		static function StripTags($szText)
		{
			//dozwolone tagi
			$szTags = '<a><b><br><big><center><dl><dt><em><font><h1><h2><h3><h4><h5><h6>';
			$szTags.= '<img><p><table><tbody><td><th><tr><tt><u><ol><ul><li><span><strong><sup><sub>';
			$szTags.= '<object><embed><param><params>';
			
			//czyscimy text
			$szText = strip_tags($szText,$szTags);
			
			//czyscimy atrybuty clas, lang, face
			$szText = ereg_replace("<([^>]*)(class|lang|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>",'',$szText);
			
			//opcinamy linki - dowiazania wewnetrzne
			$szText = preg_replace('@<a(.+?)name="[^"]+"[^>]*></a>@is','',$szText);
			
			//kasujemy puste tagi
			$szText = preg_replace('/<[^\/>]*>([\s]?)*<\/[^>]*>/is','',$szText);
			
			return $szText;
		}
		
		//wyciaga slowa kluczowe z kodu html
		static function KeywordsFromHtml($szHtml)
		{
			//decode all entities
			$szContent =  html_entity_decode($szContent,ENT_QUOTES);
			
			//tagi zastepujemy spacjami
			$szContent = str_replace( array('<br>','<br/>','<p>','</p>',':',';','-'),' ',$szContent);
		
			//kasjemy wszystkie tagi
			$szContent =  strip_tags($szContent);
			
			//wszystko z malej litery
			$szContent =  strtolower($szContent);
			
			//wycinamy niedozwolone znaki
			$szContent = preg_replace('/[^0-9A-Za-ząęćśźżół-]+/',' ',$szContent);
			
			//splitting str containing multiple seperators between elements
				
			
			foreach($aWords as &$szWord)
			{		    
				if($szWord != '' && $szWord[0] == '-') { $szWord = ''; }
				
				$iLen = strlen($szWord);
				
				if($iLen < 2 || $iLen >= 14) { $szWord = ''; }
			}

			return $aWords;
		}
		
		//bezpieczna 
		static function ToText($szTxt,$iMaxLen)
		{
			if($szTxt == '')
				return '';
			
			$szTxt = substr(&$szTxt,0,$iMaxLen);
			$szTxt = strip_tags(&$szTxt);
			$szTxt = stripslashes(&$szTxt);
			$szTxt = addslashes(&$szTxt);
			
			return trim($szTxt);
		}
		
		static function ToMoney($szTxt)
		{
			if($szTxt == '')
				return '';
			
			$szTxt = strtr($szTxt,',','.');
			$szTxt = number_format($szTxt,2,'.','');
				
			if($szTxt == '0.00')
				return '';
				
			return trim($szTxt);
		}
		
		static function ToBool($szTxt)
		{
			$szTxt = trim($szTxt);

			if($szTxt == 'tak' || $szTxt == 't' || $szTxt == '1' || $szTxt == 1 || $szTxt == 'true')
			{
				return '1';
			}
			
			if( isset($szTxt[0]) && ($szTxt[0] == '1' || $szTxt[0] == 't') )
			{
				return '1';
			}
			
			return '0';
		}
		
		static function ToInt($szTxt)
		{
			if($szTxt == '')
				return '0';
				
			$szTxt = trim($szTxt);
			
			return (int) $szTxt;
		}
	
		static function ToPlainTxt($szTxt)
		{
			$iTxtLen = strlen($szTxt);
			
			for($i=0; $i < $iTxtLen; $i++)
			{
				$szTxt[$i] = ctype_alnum($szTxt[$i]) ? $szTxt[$i] : ' ';
			}
			
			return $szTxt;
		}
		
		static function ToAsci($szTxt) 
		{
			if( !is_string($szTxt) ) { return ''; }
			
			$aRepA = array("ą","ę","ś","ó","ł","ć","ń","ź","ż");
			$aRepB = array("a","e","s","o","l","c","n","z","z");

			$szTxt = mb_strtolower($szTxt);
			$szTxt = str_replace($aRepA, $aRepB, $szTxt);
			
			for($i=0; $i<strlen($szTxt); $i++) 
			{
				$szTxt[$i] = ctype_alnum($szTxt[$i]) ? $szTxt[$i] : "-";
			}			
	
			$szTxt = trim($szTxt, "-");
			
			return $szTxt;
		}
		
	}

?>